ˆ tablice statyczne (o staªej ilo±ci elementów) ˆ tablice dynamiczne (o zmiennej ilo±ci elementów) 7.1 Tablice jednowymiarowe statyczne

Wielkość: px
Rozpocząć pokaz od strony:

Download "ˆ tablice statyczne (o staªej ilo±ci elementów) ˆ tablice dynamiczne (o zmiennej ilo±ci elementów) 7.1 Tablice jednowymiarowe statyczne"

Transkrypt

1 Rozdziaª 7 Tablice W niniejszym rozdziale zostan omówione tablice. Zostan zaprezentowane kody ¹ródªowe programów w j zyku C, pokazuj ce ich wykorzystanie w praktyce. Istnieje kilka rodzajów tablic w C, mianowicie: ˆ tablice statyczne (o staªej ilo±ci elementów) ˆ tablice dynamiczne (o zmiennej ilo±ci elementów) ˆ tablice jednowymiarowe ˆ tablice wielowymiarowe 7.1 Tablice jednowymiarowe statyczne Kilka podstawowych informacji dotycz cych tablic jednowymiarowych statycznych: ˆ rozmiar tablicy statycznej jest zawsze staªy, nie zmienia si w trakcie dziaªania programu, statyczna tablica zawsze przechowuje tyle samo elementów ˆ przed u»yciem tablicy nale»y j zadeklarowa ˆ tablica jednowymiarowa to struktura danych, na któr skªadaj si elementy tego samego typu (np. zmienne typu int, float,...), jest to ci g warto±ci tego samego typu ˆ tablica nosi jedn nazw, a dost p do poszczególnych jej elementów uzyskujemy przez podanie indeksu, który zawsze jest liczb naturaln, indeksowanie tablicy w j zyku C zawsze rozpoczynamy od 0 ˆ tablica to reprezentacja nie pojedynczej warto±ci, a zbioru warto±ci ˆ tablica (jej elementy) zajmuje ci gªy obszar w pami ci ˆ tablice jednowymiarowe mog by statyczne lub dynamiczne ˆ je±li zadeklarujemy tablic o nazwie tab, która b dzie przechowywaªa n elementów, wówczas dost p do jej pierwszego elementu uzyskamy za pomoc skªadni tab[0], natomiast do ostatniego za pomoc skªadni tab[n-1] ˆ o tablicy jednowymiarowej statycznej mo»emy mówi inaczej jako o pewnym pojemniku, kontenerze, który przechowuje jednocze±nie kilka zmiennych, a dost p do nich mo»liwy jest dzi ki wspólnej dla nich nazwie (nazwie tablicy) oraz dzi ki wªa±ciwemu danej zmiennej (elementowi tablicy), osobistemu indeksowi elementu, czyli miejsca w pojemniku 113

2 Tablic mo»emy wyobrazi sobie w postaci tabeli, która posiada jeden wiersz (st d tablica jednowymiarowa) i kilka kolumn. Ka»da z kolumn przechowuje liczb - element tablicy. Na poni»szym rysunku widzimy tablic o nazwie tab, której kolejne elementy to: 134, 5, 11,... Liczby widoczne pod tabel, to adresy zmiennych - elementów tablicy w pami ci RAM komputera przydzielonej naszemu programowi, w którym zadeklarowali±my nasz tablic tab: Powy»sza tablica zawiera 8 elementów - s to liczby caªkowite (int): 134, 5, 11, 33, 1434, 80, 131, 78. Ka»da z liczb w tablicy ma swój wªasny, unikalny indeks, dzi ki któremu mamy mo»liwo± dost pu do elementów tablicy. Pierwszy element tablicy ma zawsze indeks równy 0, natomiast ostatni ilo± elementów - 1. Zasad t nale»y zapami ta, gdy» odnosi si ona do ka»dej tablicy. W naszym przykªadzie pierwszy element ma indeks 0, to element o warto±ci 134, natomiast ostatni element tablicy ma indeks 7 oraz warto± 78 (ostatni indeks jest równy 7, poniewa» tablica zawiera 8 elementów) Deklaracja jednowymiarowej tablicy statycznej Jak wspomniano wcze±niej, przed u»yciem jednowymiarowej tablicy statycznej, nale»y j zadeklarowa (przed u»yciem zmiennej równie» nale»y j zadeklarowa ). Ogólny schemat wygl da nast puj co: 1 typ_elementow nazwa_tablicy [ ilosc_elementow ] ; gdzie: ˆ typ_elementow to jeden z typów danych j zyka C, czyli int, float, double czy char ˆ nazwa_tablicy jest dowolna, obowi zuj takie same zasady, jak przy nazewnictwie zmiennych ˆ [] w nawiasach kwadratowych podaje si ilo± elementów, jak mie±ci tablica - dzieki temu kompilator mo»e odró»ni tablic od zwykªej zmiennej ˆ [ilosc_elementow] to ilo± elementów tablicy, gdzie wszystkie elementy tablicy s typu danych typ_elementow Przykªad W poni»szym kodzie zaprezentowano przykªadowe deklaracje tablicy: 5 /* jednowymiarowa t a b l i c a statyczna przechowujaca 100 elementow typu f l o a t */ f l o a t tab1 [ ] ; 7 8 /* jednowymiarowa t a b l i c a statyczna przechowujaca 1 elemtnt typu char*/ 9 char tab [ 1 ] ; /* jednowymiarowa t a b l i c a statyczna przechowujaca 104 elementy typu i n t */ 1 i n t tab3 [ ] ; /* jednowymiarowa t a b l i c a statyczna przechowujaca 5 elementow typu double */ 15 double tab4 [ 5 ] ; 1 17 return 0 ; 18 } 114

3 7.1. Inicjalizacja jednowymiarowej statycznej tablicy Istniej dwa sposoby na inicjalizacj (nadanie warto±ci pocz tkowych) elementów tablicy: ˆ inicjalizacja PODCZAS deklaracji ˆ inicjalizacja PO deklaracji Tablice zadeklarowane w przykªadzie zostaªy utworzone, jednak elementom, które w nich si znajduj nie przypisano»adnej warto±ci. Podczas deklaracji tablicy mo»liwe jest jednak zapisanie pewnych warto±ci do tablicy. Przykªad W poni»szym przykªadzie zaprezentowano zapis warto±ci do tablicy OD RAZU POD- CZAS DEKLARACJI tablicy: 5 i n t tab [ 5 ] = {134, 5}; 7 return 0 ; 8 } Tak utworzona tablica w pami ci wygl da nast puj co: Nale»y zauwa»y, i» podane warto±ci zostaªy wpisane odpowiednio do kolejnych komórek tablicy. Pozostaªe komórki s puste - nie zapisali±my do nich»adnej warto±ci, wi c mo»emy zaªo»y,»e nic w nich nie ma (w rzeczywisto±ci s w nich nic nie znacz ce dla nas ±mieci z pami ci). Przykªad Kolejny przykªad inicjalizacji tablicy PODCZAS jej DEKLARACJI: 5 i n t tab [ 5 ] = {134, 5, 78, 910, 111}; 7 return 0 ; 8 } Tak utworzona tablica w pami ci wygl da nast puj co: 115

4 Przykªad Kolejny przykªad inicjalizacji tablicy PODCZAS jej DEKLARACJI: 5 i n t tab [ ] = {134, 5, 78, 910, 111}; 7 return 0 ; 8 } W przypadku powy»ej kompilator policzy liczb elementów tablicy. Tak utworzona tablica w pami ci wygl da nast puj co: Warto±ci elementom tablicy mo»na przypisa równie» PO jej DEKLARACJI. Poni»sze dwa przykªady s tego dowodem. Przykªad W linii 5 deklarujemy tablic, nast pnie w liniach 7-8 przypisujemy warto±ci jej elementom: 5 i n t tab [ 5 ] ; 7 tab [ 0 ] = 134; 8 tab [ 1 ] = 5 ; 9 10 return 0 ; 11 } Tak utworzona tablica w pami ci wygl da nast puj co: Przykªad Kolejny przykªad na inicjalizacj elementów tablicy PO jej DEKLARACJI: 5 i n t tab [ 5 ] ; 7 tab [ 0 ] = 134; 11

5 8 tab [ 1 ] = 5 ; 9 tab [ ] = 7 8 ; 10 tab [ 3 ] = 910; 11 tab [ 4 ] = 111; 1 13 return 0 ; 14 } Tak utworzona tablica w pami ci wygl da nast puj co: Zapis warto±ci do jednowymiarowej tablicy statycznej Zapis warto±ci do elementu tablicy widzieli±my ju» wcze±niej - w poprzednim przykªadzie, gdy nadawali- ±my warto±ci elementom tablicy po jej deklaracji. Zapis warto±ci do elementu tablicy mo»na przedstawi za pomoc schematu: 1 tab [ indeks_elementu ] = wartosc_elementu ; je±li tablica ma rozmiar n (mo»e przechowywa n elementów), wówczas dozwolone warto±ci dla indeksu nale» do przedziaªu [0, n-1]. Przykªad Spróbujmy wi c zapisa do -go elementu tablicy warto± 51: 5 i n t tab [ 5 ] ; 7 tab [ 1 ] = 51; 8 9 return 0 ; 10 } Zapis warto±ci do elementu tablicy podobny jest do zapisu warto±ci do zmiennej. Ró»nic jest zapis tablicowy, gdzie dodatkowo musimy w nawiasach kwadratowych poda indeks elementu: 5 i n t tab [ 5 ], x ; 7 tab [ 1 ] = 51; 8 x = 104; 9 10 return 0 ; 11 } Nale»y zapami ta,»e indeks i-tego elementu tablicy równy jest i

6 7.1.4 Zapis warto±ci do jednowymiarowej tablicy statycznej z klawiatury Nic nie stoi na przeszkodzie, aby zapisa do elementu tablicy warto± wprowadzon z klawiatury, jak ma to miejsce w przypadku zwykªych zmiennych. Równie» i w tym przypadku uzywamy funkcji scanf a w jej ci gu formatuj cym podajemy format odpowiedni do typu elementów tablicy: 5 /* jednowymiarowa t a b l i c a statyczna przechowujaca 5 elementow typu i n t */ i n t tab [ 5 ] ; 7 8 /* poniewaz eleemnty t a b l i c y to l i c z b y calkowite, do wczytania w a r t o s c i 9 do 3 go elementu t a b l i c y uzywamy f u n k c j i s c a n f i ciagu 10 formatujacego dla l i c z b calkowitych, c z y l i %d i n i e 11 zapominamy o znaku & 1 */ 13 scanf ( "%d", &tab [ ] ) ; return 0 ; 1 } Przykªad Porównanie wczytywania warto±ci z klawiatury do zmiennej i do 4-go elementu tablicy: 5 i n t tab [ 5 ] ; scanf ( "%d", &tab [ 3 ] ) ; 7 8 i n t x ; 9 scanf ( "%d", &x ) ; return 0 ; 1 } Dost p do warto±ci jednowymiarowej tablicy statycznej Poniewa» elementy tablicy mog byc zadeklarowane jako int, float, double, czy te» char, mo»emy wykonywa na nich wszystkie operacje, które mo»liwe s do wykonania na zwykªych zmiennych. Prezentuje to poni»szy przykªad: 5 i n t tab [ 5 ] = { 1, 1, 1, 1, 1 } ; 7 tab [ 0 ] = 100 * tab [ 0 ] ; 8 9 tab [ 1 ] = tab [ 0 ] + tab [ 1 ] + 4 ; tab [ ] = 0 % 9 ; 1 13 tab [ 3 ] += 5 ; tab [ 4 ] = tab [ 1 ] / tab [ ] ; 1 17 return 0 ; 118

7 18 } Po wykonaniu wszystkich instrukcji programu, tablica b dzie w pami ci wygl da nast puj co: 7.1. Wy±wietlenie warto±ci jednowymiarowej tablicy statycznej Mo»liwe jest równie» wy±wietlenie warto±ci danego elementu tablicy (znajduj cego si pod danym indeksem). Prosz porówna wy±wietlenie zwykªej zmiennej oraz -go elementu tablicy: 5 i n t tab [ 5 ] = {1,1}; printf ( "%d", tab [ 1 ] ) ; 7 8 i n t x = 5; 9 printf ( "%d", x ) ; return 0 ; 1 } Tablica jednowymiarowa statyczna i p tle W przypadku tablic, gdzie dost p do ka»dego elementu mo»liwy jest za pomoc identycznej nazwy i zmieniaj cego si indeksu, bardzo cz sto stosuje si p tle do wykonania operacji na wszystkich elementach tablicy. Spróbujmy w kolejnych przykªadach wy±wietli wszystkie elementy tablicy za pomoc p tli oraz wczyta wszystkie elementy do tablicy z klawiatury, równie» u»ywaj c do tego celu p tli. Elementy tablicy indeksujemy od 0 do n-1, gdzie n to rozmiar tablicy. Wszystkie inne indeksy (mniejsze, ni» zero oraz wi ksze od n-1) s nieprawidªowe - ich u»ycie mo»e powodowa nieprzewidziane skutki podczas dziaªania programu. Nale»y bardzo uwa»a podczas ustalania pierwszego i ostatniego poprawnego indeksu tablicy, szczególnie podczas dost pu do jej elementów w p tli. Przykªad Wy±wietlenie WSZYSTKICH elementów tablicy. Nasza przykªadowa tablica wyglada nast puj co: 119

8 5 i n t tab [ 5 ] = {1, 1, 51}; i n t i ; 7 8 f o r ( i=0; i<3; i++) 9 { 10 printf ( "%d\n", tab [ i ] ) ; 11 } return 0 ; 15 } W linii 5 deklarujemy 3 elementow tablic elementów typu int (wszystkie elementy przechowywane w tablicy to liczby caªkowite). Poniewa» dozwolone warto±ci indeksów dla elementów tablicy nale» do przedziaªu [0, ], tak te» ustawiamy nasz licznik p tli - czyli zmienn i, która b dzie przyjmowaªa warto±ci od 0 do. Nast pnie, ju» w p tli, wy±wietlamy kolejny element tablicy za pomoc zmieniaj cego si indeksu i. Prze±led¹my dziaªanie programu krok po kroku: KROK 1 ˆ deklarujemy tablic o nazwie tab która przechowuje 3 elementy i wpisujemy jej przykªadowe warto±ci tak,»e element 1-szy (pod indeksem 0) ma warto± 1, element drugi (pod indeksem 1) ma warto± 1, element trzeci (pod indeksem ) ma warto± 51. KROK ˆ deklarujemy zmienn i KROK 3 ˆ wchodzimy do p tli, zmienna i ma warto± 0, i=0; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest mniejsza, poniewa» jest równa zero, wi c i<3; jest prawd ˆ wypisujemy na ekranie warto± i-go (czyli pierwszego) elementu tablicy tab za pomoc funkcji printf, wypisujemy warto± 1 ˆ wykonujemy instrukcj i++, czyli zwi kszamy warto± zmiennej i o 1, warto± zwi kszona zostaje zapami tana w zmiennej i, poprzednia jej warto± (0) zostaje zapomniana i zast piona 1 KROK 4 ˆ zmienna i ma warto± 1, i=1; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest mniejsza, poniewa» jest równa 1, wi c i<3; jest prawd ˆ wypisujemy na ekranie warto± i-go (czyli drugiego) elementu tablicy tab za pomoc funkcji printf, wypisujemy warto± 1 ˆ wykonujemy instrukcj i++, czyli zwi kszamy warto± zmiennej i o 1, warto± zwi kszona zostaje zapami tana w zmiennej i, poprzednia jej warto± (1) zostaje zapomniana i zast piona 10

9 KROK 5 ˆ zmienna i ma warto± 1, i=; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest mniejsza, poniewa» jest równa, wi c i<3; jest prawd ˆ wypisujemy na ekranie warto± i-go (czyli trzeciego) elementu tablicy tab za pomoc funkcji printf, wypisujemy warto± 51 ˆ wykonujemy instrukcj i++, czyli zwi kszamy warto± zmiennej i o 1, warto± zwi kszona zostaje zapami tana w zmiennej i, poprzednia jej warto± () zostaje zapomniana i zast piona 3 KROK ˆ zmienna i ma warto± 3, i=3; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest równa 3, wi c warunek i<3; nie jest prawd - p tla zostaje zako«czona, nie s wykonywane»adne dodatkowe instrukcje W ten sposób wydrukowali±my na ekranie warto±ci wszystkich elementów tablicy. Powy»szy program mo»na zmodykowa w taki sposób, aby podczas wy±wietlania warto±ci ka»dego z elementów program mówiª nam, pod którym indeksem w tablicy dany element si znajduje: 5 i n t tab [ 5 ] = {1,1, 51}; i n t i ; 7 8 f o r ( i=0; i<3; i++) 9 { 10 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 11 } return 0 ; 15 } Przykªad Skoro potramy ju» wy±wietli wszystkie elementy tablicy, spróbujmy napisa program, który pobierze warto±ci od u»ytkownika (z klawiatury) i wpisze je wprost do tablicy, a nast pnie wy±wietli wszystkie elementy tablicy: 1 i n t main ( ) { 3 i n t tab [ 3 ] ; 4 i n t i ; 5 f o r ( i=0; i<3; i++) 7 { 8 scanf ( "%d", &tab [ i ] ) ; 9 } f o r ( i=0; i<3; i++) 1 { 13 printf ( "%d\n", tab [ i ] ) ; 14 } 15 1 return 0 ; 17 } 11

10 Prze±led¹my dziaªanie programu krok po kroku, omawiaj c jedynie najwa»niejsz w tym momencie dla nas cz ± - wpisanie warto±ci do elementów tablicy za pomoc funkcji scanf: KROK 1 ˆ wchodzimy do p tli, zmienna i ma warto± 0, i=0; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest mniejsza, poniewa» jest równa zero, wi c i<3; jest prawd ˆ wczytujemy z klawiatury warto± i-go (czyli pierwszego) elementu do tablicy tab za pomoc funkcji scanf ˆ wykonujemy instrukcj i++, czyli zwi kszamy warto± zmiennej i o 1, warto± zwi kszona zostaje zapami tana w zmiennej i, poprzednia jej warto± (0) zostaje zapomniana i zast piona 1 KROK ˆ wchodzimy do p tli, zmienna i ma warto± 0, i=1; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest mniejsza, poniewa» jest równa 1, wi c i<3; jest prawd ˆ wczytujemy z klawiatury warto± i-go (czyli drugiego) elementu do tablicy tab za pomoc funkcji scanf ˆ wykonujemy instrukcj i++, czyli zwi kszamy warto± zmiennej i o 1, warto± zwi kszona zostaje zapami tana w zmiennej i, poprzednia jej warto± (1) zostaje zapomniana i zast piona KROK 3 ˆ wchodzimy do p tli, zmienna i ma warto± 0, i=; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest mniejsza, poniewa» jest równa, wi c i<3; jest prawd ˆ wczytujemy z klawiatury warto± i-go (czyli trzeciego) elementu do tablicy tab za pomoc funkcji scanf ˆ wykonujemy instrukcj i++, czyli zwi kszamy warto± zmiennej i o 1, warto± zwi kszona zostaje zapami tana w zmiennej i, poprzednia jej warto± () zostaje zapomniana i zast piona 3 KROK 4 ˆ zmienna i ma warto± 3, i=3; ˆ sprawdzamy warunek, je±li zmienna i jest mniejsza ni» 3, wykonujemy instrukcje p tli. Tutaj jest równa 3, wi c warunek i<3; nie jest prawd - p tla zostaje zako«czona, nie s wykonywane»adne dodatkowe instrukcje W ten sposób pobrali±my z klawiatury i zapisali±my do tablicy warto±ci pierwszego, drugiego i trzeciego elementu tablicy za pomoc funkcji scanf. Prosz porówna wczytywanie warto±ci do zwykªej zmiennej z wczytywaniem warto±ci do okre±lonego (tu 3-go) elementu tablicy): 1

11 5 i n t x ; scanf ( "%d", &x ) ; 7 8 i n t tab [ 5 ] ; 9 scanf ( "%d", &tab [ ] ) ; return 0 ; 1 } Przekazywanie jednowymiarowej tablicy statycznej do funkcji Do funkcji mo»emy przekaza pojedynczy element z tablicy, lub te» wszystkie jej elementy - czyli caª jednowymiarow tablic. Istniej 3 sposoby na przekazanie do funkcji caªej jednowymiarowej tablicy (wszystkich jej elementów). Wa»ne informacje dotycz ce funkcji i tablic statycznych: ˆ nie mo»na napisa funkcji zwracaj cej tablic statyczn ˆ tablica statyczna do funkcji jest zawsze przekazywana przez jej adres, oznacza to, i» je±li przeka»emy do funkcji statyczn, jednowymiarow tablic, funkcja b dzie j mogªa zmodykowa (b dzie mogªa zmienia jej elementy, poniewa» pracuje na oryginale tablicy) - inaczej, ni» w przypadku zmiennych, które przekazywane s do funkcji przez warto±, dzi ki czemu funkcja pracuje na ich kopiach Przykªad Przekazywanie do funkcji pojedynczego elementu tablicy: prze±led¹my poniszy przykªad. Funkcja suma pobiera argumenty - liczby caªkowite, oraz zwraca jako wynik ich sum. Do funkcji mo»emy przekaza zmienne (linia 13), dowolne liczby (linia 1), czwarty element tablicy (czyli jedn warto± ) oraz zmienn (linia 19), czwarty element tablicy (czyli jedn warto± ) oraz liczb (linia ) lub czwarty element tablicy (czyli jedn warto± ) oraz pierwszy element tablicy (czyli jedn warto± ) (linia 5). Jak wynika z ponizszego kodu, je±li przeka»emy do funkcji pojedynczy element tablicy, jest on w funkcji traktowany jako zwykªa zmienna przekazana do niej: warto± danego elementu tablicy jest KOPIOWANA do funkcji, dzi ki czemu funkcja pracuje na kopii elementu tablicy, tak, jak dzieje si to w przypadku zwykªych zmiennych. 3 i n t suma ( i n t a, i n t b ) 5 return a+b ; } 7 8 i n t main ( ) 9 { 10 i n t tab [ ] = { 1,, 3, 4, 5 } ; 11 i n t n = 5, m =, wynik ; 1 13 wynik = suma ( n, m ) ; 14 printf ( "wynik = %d\n", wynik ) ; 15 1 wynik = suma (, 4) ; 17 printf ( "wynik = %d\n", wynik ) ; wynik = suma ( tab [ 3 ], n ) ; 0 printf ( "wynik = %d\n", wynik ) ; 1 wynik = suma ( tab [ 3 ], 3) ; 3 printf ( "wynik = %d\n", wynik ) ; 4 5 wynik = suma ( tab [ 3 ], tab [ 0 ] ) ; 13

12 printf ( "wynik = %d\n", wynik ) ; 7 8 return 0 ; 9 } Przykªad Jak wspomniano wcze±niej, istnieje mo»liwo± przekazania do funkcji caªej tablicy, dzi ki czemu funkcja ma dost p do wszystkich jej elementów i MO E JE MODYFIKOWA w takim sensie, i» zmiany przeprowadzone na tablicy wewn trz funkcji, s widoczne PO wyj±ciu z funkcji. Przekazywanie do funkcji wszystkich elementów statycznej jednowymiarowej tablicy (caªej tablicy): 3 void fun1 ( i n t * tab, i n t n ) 5 i n t i ; f o r ( i=0; i<n ; i++) 7 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 8 printf ( "\n" ) ; 9 } void fun ( i n t tab [ ], i n t n ) 1 { 13 i n t i ; 14 f o r ( i=0; i<n ; i++) 15 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 1 printf ( "\n" ) ; 17 } void fun3 ( i n t tab [ 5 ] ) 0 { 1 i n t i ; f o r ( i=0; i<5; i++) 3 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 4 printf ( "\n" ) ; 5 } 7 i n t main ( ) 8 { 9 i n t tab [ ] = { 1,, 3, 4, } ; 30 i n t n = 5 ; 31 3 fun1 ( tab, n ) ; 33 fun ( tab, n ) ; 34 fun3 ( tab ) ; 35 3 return 0 ; 37 } Omówmy i przeanalizujmy ka»d z 3 funkcji z powy»szego programu. Funkcja pierwsza, tj. fun1: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun1 za pomoc wska¹nika (b dziemy o nich mówi pó¹niej) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie elementy tablicy 14

13 ˆ w funkcji main, aby przekaza tablic do funkcji fun1 podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania) oraz ilo± jej elementów ˆ funkcja fun1 jest uniwersalna, poniewa» dziaªa dla dowolnie du»ej tablicy - dla tablicy o n elementach Funkcja druga, tj. fun: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun za pomoc nazwy tablicy, bez podania ilo±ci elementów - przekazywana jest caªa tablica, bez podania ilo±ci jej elementów (tzw. unsized array) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie elementy tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania) oraz ilo± jej elementów ˆ funkcja fun jest uniwersalna, poniewa» dziaªa dla dowolnie du»ej tablicy - dla tablicy o n elementach Funkcja trzecia, tj. fun3: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun3 za pomoc nazwy tablicy, wraz z podaniem ilo±ci przekazywanych elementów tablicy - funkcja przyjmuje wi c tablic o okre±lonej liczbie elementów - tutaj funkcja mo»e przyj jedynie tablic, która ma 5 elementów (sized array) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie 5 elementów tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun3 podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania), nie trzeba ju» podawa ilo±ci elementów tablicy ˆ funkcja fun3 jest NIE JEST uniwersalna, poniewa» dziaªa jedynie dla 5 elementowej tablicy - dla tablicy o 5 elementach, wi c nie jest zbyt u»yteczn funkcj Przykªad Kolejny przykªad pokazuje, i» przekazuj c do funkcji tablic w jakikolwiek z 3 poznanych sposobów i modykuj c warto±ci jej elementów w funkcji, po wyj±ciu z niej i powrocie do funkcji main zmiany naniesione w funkcji w main s widoczne: 3 void dosth ( i n t tab [ ], i n t n ) 5 i n t i=0; 15

14 while ( i<n ) 7 { 8 tab [ i ] = tab [ i ] * tab [ i ] ; 9 i++; 10 } 11 } i n t tab [ ] = { 1,, 3 } ; 1 i n t n = 3, i ; printf ( "PRZED WYKONANIEM FUNKCJI: \ n\n" ) ; 19 f o r ( i=0; i<n ; i++) 0 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 1 printf ( "\n" ) ; 3 dosth ( tab, n ) ; 4 5 printf ( "PO WYKONANIU FUNKCJI: \ n\n" ) ; f o r ( i=0; i<n ; i++) 7 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 8 printf ( "\n" ) ; 9 30 return 0 ; 31 } Powy»szy program wy±wietli: 1

15 7.1.9 Zadania do wykonania Zadanie 0.0 Napisz program, w którym stworzysz 10-elementow tablic liczb zmiennoprzecinkowych, a nast pnie w p tli wypeªnij j liczbami. Wy±wietl zawarto± tablicy. Zadanie 0.1 Program z zadania 0.0 zamie«na funkcj, tzn. napisz funkcj, która jako argument przyjmuje 10-elementow tablic liczb zmiennoprzecinkowych oraz jej rozmiar, a nast pnie j wy±wietla. Tablic stwórz i wypeªnij w funkcji main, a nast pnie przeka» j do funkcji wy±wietlaj cej. Zadanie 0. Napisz funkcj, która jako argument przyjmuje n elementow tablic znaków, a nast pnie j wy±wietla (wszystkie znaki w jedenj linii). Tablic stwórz i wypeªnij w funkcji main, znaki wczytaj od u»ytkownika. Przeka» tablic do funkcji wy±wietlaj cej. Zadanie 1 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic elementów typu int i zeruje warto±ci elementów tablicy (nadaje wszystkim elementom tablicy warto± 0). Zadanie Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i podwaja warto± wszystkich elementów tablicy. Zadanie 3 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca jako warto± sum elementów tablicy tab. Zadanie 4 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca jako warto± iloczyn elementów tablicy tab. Zadanie 5 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca jako warto± sum elementów tablicy tab o indeksach parzystych (uznajemy,»e 0 jest parzyste). Zadanie Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca jako warto± ±rednia arytmetyczn elementów tablicy tab. redni arytmetyczn elementów a 0,..., a n obliczamy wedªug wzoru: avg = a 0 + a a n n (7.1) Zadanie 7 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca jako warto± ±rednia geometryczn elementów tablicy tab. redni geometryczn elementów a 0,..., a n obliczamy wedªug wzoru: avg = n a 0 a 1... a n (7.) Podpowied¹: z lekcji matematyki wiemy,»e. n a = a 1 n Zadanie 8 Napisz funkcj, która otrzymuje jako argument liczb n i zwraca jako warto± najwi ksz liczb pierwsz mniejsz od n. 17

16 Zadanie 9 Napisz funkcj, która otrzymuje trzy argumenty liczb n oraz dwie n -elementowe tablice tab1, tab o elementach typu int i przepisuje zawarto± tablicy tab1 do tablicy tab. Zadanie 10 Napisz funkcj, która otrzymuje trzy argumenty liczb n oraz dwie n -elementowe tablice tab1, tab o elementach typu int i przepisuje zawarto± tablicy tab1 do tablicy tab w odwróconej kolejno±ci. Zadanie 11 Napisz funkcj, która otrzymuje trzy argumenty liczb n oraz trzy n -elementowe tablice tab1, tab i tab3 o elementach typu int i przepisuje zawarto± tablicy tab1 do tablicy tab, tablicy tab do tablicy tab3, a tablicy tab3 do tablicy tab1. Zadanie 1 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca warto± najwi kszego elementu tablicy tab. Zadanie 13 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i zwraca indeks najwi kszego elementu tablicy tab o. Zadanie 14 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i odwraca kolejno± elementów tablicy tab. Zadanie 15 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i przesuwa o jeden w lewo wszystkie elementy tablicy (tak,»eby warto± elementu o indeksie 1 znalazªa si w elemencie o indeksie 0, warto± elementu o indeksie znalazªa si w elemencie o indeksie 1, za± warto± elementu o indeksie 0 w elemencie o indeksie n-1). Zadanie 1 Napisz funkcj, która otrzymuje dwa argumenty liczb n oraz n -elementow tablic tab o elementach typu int i przesuwa o jeden w prawo wszystkie elementy tablicy (tak,»eby warto± elementu o indeksie 0 znalazªa si w elemencie o indeksie 1, warto± elementu o indeksie 1 znalazªa si w elemencie o indeksie, za± warto± elementu o indeksie n-1 w elemencie o indeksie 0 ). 18

17 7.3 Tablice jednowymiarowe dynamiczne Tablice statyczne nie daj nam mo»liwo±ci decydowania o ich wymiarach podczas dziaªania programu. Oznacza to»e musimy zna wielko± tablicy na poziomie tworzenia aplikacji. Przykªadowo, poni»szy kod tworzy tablic o rozmiarze n, chocia» si skompiluje, nie jest zgodny ze standardem j zyka C (poniewa» rozmiar tablicy nie byª znany w czasie kompilowania programu, a dopiero w czasie jego uruchomienia): 3 i n t main ( i n t argc, char ** argv ) 5 i n t n, i ; 7 printf ( "Podaj n : \ n> " ) ; 8 scanf ( "%d", &n ) ; 9 10 i n t tab [ n ] ; 11 1 f o r ( i=0; i<n ; i++) 13 { 14 tab [ i ] = ( i+1) ; 15 printf ( " tab[%d ] = %d\n", i, tab [ i ] ) ; 1 } return 0 ; 19 } Nale»y unika sytuacji takich, jak powy»sza. Aby tworzy tablic, której rozmiar poznamy dopiero na etapie uruchomienia programu, nale»y wykorzysta dynamiczny przydziaª pami ci oraz wska¹niki. Dynamiczna alokacja pami ci pozwala na przydzielenie odpowiedniej ilo±ci pami ci, a tak»e zwolnienie jej od razu, gdy nie b dzie ju» potrzebna. Mówi c inaczej, dynamiczna alokacja pami ci pozwala» cznie«i zarz dza. Do zarz dzania pami ci w j zyku C wykorzystujemy wska¹niki, oraz poni»sze 4 funkcje z biblioteki stdlib.h (nale»y doª czy nagªówek #include <stdlib.h>) oraz operator sizeof: Nazwa funkcji Zadanie funkcji Nagªówek funkcji malloc() Przydziela pami void *malloc(size_t size) calloc() Przydziela pami i wypeªnia tablic zerami void *calloc(size_t nitems, size_t size) free() Zwalnia poprzednio przydzielon pami void free(void *ptr) realloc() Zmienia rozmiar poprzednio przydzielonej pami ci void *realloc(void *ptr, size_t size) Tablicy dynamicznej u»ywamy tak samo, jak zwykª, poznan wcze±niej tablic statyczn. Nie trzeba na takiej tablicy operowa wska¹nikami, wska¹niki potrzebne s tylko przy jej deklaracji (chocia» mo»na na niej operowa za pomoc wska¹ników, ale do tego przejdziemy pó¹niej.) Mo»liwo± ta wynika z faktu, ¹e tablica statyczna to te» wska¹nik, tylko nie jest to do ko«ca widoczne Operator sizeof Zanim nauczymy si tworzy dynamiczne tablice jednowymiarowe, musimy najpierw pozna dziaªanie operatora sizeof. Operator sizeof inaczej nazywany jest operatorem rozmiaru - operator ten dost pny jest w j zyku C i C++. Operatora u»ywamy podobnie jak funkcji, która jako argument pobiera (w naszym przypadku) nazw typu danych, którego rozmiar chcemy pozna, oraz zwraca jego rozmiar w bajtach. Przykªadowe u»ycie operatora zaprezentowano poni»ej: 158

18 5 i n t rozmiar = s i z e o f ( i n t ) ; printf ( " Int zajmuje %d bajty w pamieci RAM\n", rozmiar ) ; 7 return 0 ; 8 } 7.3. Tworzenie i usuwanie jednowymiarowej dynamicznej tablicy Do utworzenia jednowymiarowej dynamicznej tablicy potrzebna nam b dzie funkcja malloc, która przydziela pami (a mówi c dokªadniej: okre±lon liczb bajtów) i zwraca wska¹nik do pierwszego bajtu przydzielonej pami ci tak,»eby±my mieli dost p do wszystkich jej elementów. 1 i n t * tab = malloc ( s i z e o f ( i n t ) * n ) ; W powy»szym przykªadzie tworzony jest wska¹nik (tablica) tab, której dynamicznie przydzielana jest pami. Chcemy stworzy tablic o n elementach, gdzie ka»dy z elementó b dzie liczb caªkowit. W takim wypadku musimy powiedzie, ile bajtów potrzebujemy na tablic. Skoro rozmiar jednego inta mo»emy sprawdzi za pomoc operatora sizeof, to wiemy, ile miejsca w bajtach b dziemy potrzebowa na tablic : sizeof(int) * n, bo mamy n intów, z których ka»dy zajmuje sizeof(int) bajtów. Dwa poni»sze programy robi to samo - tworz tablic liczb caªkowitych o rozmiarze 100, zeruj j, a nast pnie usuwaj za pomoc funkcji free: 3 i n t main ( i n t argc, char ** argv ) 5 i n t i ; 7 // d e f i n i c j a t a b l i c y 8 i n t * tab ; 9 // p r z y d z i e l e n i e pamieci na 100 elementow typu i n t 10 tab = malloc ( s i z e o f ( i n t ) * 100) ; 11 1 f o r ( i=0; i <100; i++) 13 tab [ i ] = 0 ; // z w o l n i e n i e pamieci 159

19 1 free ( tab ) ; 17 tab = NULL ; return 0 ; 0 } 3 i n t main ( i n t argc, char ** argv ) 5 i n t i ; 7 // d e f i n i c j a t a b l i c y i p r z y d z i e l e n i e pamieci na 100 elementow typu i n t 8 i n t * tab = malloc ( s i z e o f ( i n t ) * 100) ; 9 10 f o r ( i=0; i <100; i++) 11 tab [ i ] = 0 ; 1 13 // z w o l n i e n i e pamieci 14 free ( tab ) ; 15 tab = NULL ; 1 17 return 0 ; 18 } Przeanalizujmy poni»szy przykªad. Zaªó»my,»e chcemy stworzy dynamiczn, jednowymiarow tablic o ilo±ci elementów (rozmiarze) podanym przez u»ytkownika. Aby to zrobi, na pocz tku wczytujemy rozmiar tablicy, nast pnie przydzielamy dla niej pami... : 1 i n t n ; scanf ( "%d", &n ) ; 3 i n t * wski = NULL ; 4 wski = ( i n t *) malloc ( n * s i z e o f ( i n t ) ) ; Dost p do elementów dynamicznej tablicy jednowymiarowej... zerujemy tablic, wy±wietlamy jej zawarto± (czyli uzyskujemy dost p do elmentów tablicy): 1 f o r ( i=0; i<n ; i++) wski [ i ] = 0 ; 3 4 f o r ( i=0; i<n ; i++) 5 printf ( "%d ", wski [ i ] ) ; printf ( "\n" ) ; Usuwanie dynamicznej tablicy jednowymiarowej... i usuwamy przydzielon pami : 1 free ( wski ) ; wski = wski ; Tworzenie, dost p do elementów oraz usuwanie dynamicznej tablicy jednowymiarowej Wszystkie powy»sze operacje, aby mogªy dziaªa jako program, zostaªy zebrane na listingu poni»ej. Zaprezentowany kod: 10

20 1. Wczytuje od u»ytkownika ilo± elementów tablicy. Deniuje wska¹niki na typy danych int, float, double, char 3. Korzystaj c ze wska¹ników przydziela pami dla ka»dej tablicy (dla tablicy elementów typu int, float, double, char) 4. Wypeªnia ka»d z tablic 5. Wy±wietla ka»d z tablic. Zwalnia pami na ka»d z przydzielonych tablic Podsumowuj c, na poni»szych przykªadach widzimy schematy tworzenia dynamicznych tablic jednowymiarowych o n elementach, dla ka»dego typu danych: 5 i n t i ; 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 13 /* wskaznik na zmienna typu i n t */ 14 i n t * wski = NULL ; 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e intow */ 17 wski = malloc ( n * s i z e o f ( i n t ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wski [ i ] = 0 ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%d ", wski [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wski ) ; 30 wski = NULL ; 31 3 return 0 ; 33 } 5 i n t i ; 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 13 /* wskaznik na zmienna typu f l o a t */ 14 f l o a t * wsk = NULL ; 11

21 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e f l o a t */ 17 wsk = malloc ( n * s i z e o f ( f l o a t ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wsk [ i ] = 0 ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%.1 f ", wsk [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wsk ) ; 30 wsk = NULL ; 31 3 return 0 ; 33 } 5 i n t i ; 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 13 /* wskaznik na zmienna typu double */ 14 double * wsk = NULL ; 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e double */ 17 wsk = malloc ( n * s i z e o f ( double ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wsk [ i ] = 0 ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%.1 f ", wsk [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wsk ) ; 30 wsk = NULL ; 31 3 return 0 ; 33 } 5 i n t i ; 7 /* i l o s c elementow t a b l i c y */ 8 i n t n ; 9 /* wczytanie i l o s c i elementow t a b l i c y */ 10 printf ( "Podaj i l o s c elementow t a b l i c y : \ n> " ) ; 11 scanf ( "%d", &n ) ; 1 1

22 13 /* wskaznik na zmienna typu char */ 14 char * wsk = NULL ; 15 1 /* p r z y d z i e l e n i e pamieci na n elemenotwa t a b l i c e char */ 17 wsk = malloc ( n * s i z e o f ( char ) ) ; /* wyzerowanie t a b l i c y dynamicznej */ 0 f o r ( i=0; i<n ; i++) 1 wsk [ i ] = ' 0 ' ; 3 /* w y s w i e t l e n i e t a b l i c y */ 4 f o r ( i=0; i<n ; i++) 5 printf ( "%c ", wsk [ i ] ) ; printf ( "\n" ) ; 7 8 /* z w o l n i e n i e pamieci p r z y d z i e l o n e j na t a b l i c e */ 9 free ( wsk ) ; 30 wsk = NULL ; 31 3 return 0 ; 33 } 7.3. Tablice jednowymiarowe dynamiczne jako argumenty funkcji Tablice jednowymiarowe mog by przekazywane do funkcji jako jej argumenty. Wraz z przekazaniem do funkcji tablicy, nale»y do funkcji, jako kolejny jej argument, przekaza liczb elementów tablicy. Do funkcji mo»emy przekaza pojedynczy element z tablicy, lub te» wszystkie jej elementy - czyli caª jednowymiarow tablic. Istniej 3 sposoby na przekazanie do funkcji caªej jednowymiarowej tablicy (wszystkich jej elementów). Wa»ne informacje dotycz ce funkcji i tablic dynamicznych: ˆ mo»na napisa funkcj zwracaj c tablic dynamiczn ˆ tablica dynamiczna do funkcji jest zawsze przekazywana przez jej adres, oznacza to, i» je±li przeka»emy do funkcji dynamiczn, jednowymiarow tablic, funkcja b dzie j mogªa zmodykowa (b dzie mogªa zmienia jej elementy, poniewa» pracuje na oryginale tablicy) - inaczej, ni» w przypadku zmiennych, które przekazywane s do funkcji przez warto±, dzi ki czemu funkcja pracuje na ich kopiach ˆ Nale»y zawsze po zako«czeniu korzystania z tablicy dynamicznej zwolni przydzielon dla niej pami Przykªad Przekazywanie do funkcji pojedynczego elementu tablicy: prze±led¹my poniszy przykªad. Funkcja suma pobiera argumenty - liczby caªkowite, oraz zwraca jako wynik ich sum. Do funkcji mo»emy przekaza zmienne (linia 17), dowolne liczby (linia 0), czwarty element tablicy (czyli jedn warto± ) oraz zmienn (linia 3), czwarty element tablicy (czyli jedn warto± ) oraz liczb (linia ) lub czwarty element tablicy (czyli jedn warto± ) oraz pierwszy element tablicy (czyli jedn warto± ) (linia 9). Jak wynika z ponizszego kodu, je±li przeka»emy do funkcji pojedynczy element tablicy, jest on w funkcji traktowany jako zwykªa zmienna przekazana do niej: warto± danego elementu tablicy jest KOPIOWANA do funkcji, dzi ki czemu funkcja pracuje na kopii elementu tablicy, tak, jak dzieje si to w przypadku zwykªych zmiennych. 3 i n t suma ( i n t a, i n t b ) 5 return a+b ; } 7 8 i n t main ( ) 13

23 9 { 10 i n t i ; 11 i n t * tab = malloc ( s i z e o f ( i n t ) * 5) ; 1 f o r ( i=0; i<5; i++) 13 tab [ i ] = ( i *) ; i n t n = 5, m =, wynik ; 1 17 wynik = suma ( n, m ) ; 18 printf ( "wynik = %d\n", wynik ) ; 19 0 wynik = suma (, 4) ; 1 printf ( "wynik = %d\n", wynik ) ; 3 wynik = suma ( tab [ 3 ], n ) ; 4 printf ( "wynik = %d\n", wynik ) ; 5 wynik = suma ( tab [ 3 ], 3) ; 7 printf ( "wynik = %d\n", wynik ) ; 8 9 wynik = suma ( tab [ 3 ], tab [ 0 ] ) ; 30 printf ( "wynik = %d\n", wynik ) ; 31 3 free ( tab ) ; 33 tab = NULL ; return 0 ; 3 } Przykªad Jak wspomniano wcze±niej, istnieje mo»liwo± przekazania do funkcji caªej tablicy, dzi ki czemu funkcja ma dost p do wszystkich jej elementów i MO E JE MODYFIKOWA w takim sensie, i» zmiany przeprowadzone na tablicy wewn trz funkcji, s widoczne PO wyj±ciu z funkcji. Przekazywanie do funkcji wszystkich elementów statycznej dynamicznej tablicy (caªej tablicy): 3 void fun1 ( i n t * tab, i n t n ) 5 i n t i ; f o r ( i=0; i<n ; i++) 7 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 8 printf ( "\n" ) ; 9 } void fun ( i n t tab [ ], i n t n ) 1 { 13 i n t i ; 14 f o r ( i=0; i<n ; i++) 15 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 1 printf ( "\n" ) ; 17 } void fun3 ( i n t tab [ 5 ] ) 0 { 1 i n t i ; f o r ( i=0; i<5; i++) 3 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 4 printf ( "\n" ) ; 5 } 7 i n t main ( ) 8 { 9 i n t i ; 30 i n t * tab = malloc ( s i z e o f ( i n t ) * 5) ; 31 f o r ( i=0; i<5; i++) 14

24 3 tab [ i ] = ( i *) ; i n t n = 5 ; 35 3 fun1 ( tab, n ) ; 37 fun ( tab, n ) ; 38 fun3 ( tab ) ; free ( tab ) ; 41 tab = NULL ; 4 43 return 0 ; 44 } Omówmy i przeanalizujmy ka»d z 3 funkcji z powy»szego programu. Funkcja pierwsza, tj. fun1: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun1 za pomoc wska¹nika (b dziemy o nich mówi pó¹niej) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie elementy tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun1 podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania) oraz ilo± jej elementów ˆ funkcja fun1 jest uniwersalna, poniewa» dziaªa dla dowolnie du»ej tablicy - dla tablicy o n elementach Funkcja druga, tj. fun: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun za pomoc nazwy tablicy, bez podania ilo±ci elementów - przekazywana jest caªa tablica, bez podania ilo±ci jej elementów (tzw. unsized array) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie elementy tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania) oraz ilo± jej elementów ˆ funkcja fun jest uniwersalna, poniewa» dziaªa dla dowolnie du»ej tablicy - dla tablicy o n elementach Funkcja trzecia, tj. fun3: ˆ pobiera argumenty (z funkcji main mo»emy przesªa do niej, przekaza jej argumenty): caª, jednowymiarow tablic liczb caªkowitych tab, oraz ilo± jej elementów n 15

25 ˆ jednowymiarowa tablica przekazywana jest z funkcji main do funkcji fun3 za pomoc nazwy tablicy, wraz z podaniem ilo±ci przekazywanych elementów tablicy - funkcja przyjmuje wi c tablic o okre±lonej liczbie elementów - tutaj funkcja mo»e przyj jedynie tablic, która ma 5 elementów (sized array) ˆ funkcja nie zwraca warto±ci, jej typ zwracany to void ˆ funkcja wy±wietla wszystkie 5 elementów tablicy ˆ w funkcji main, aby przekaza tablic do funkcji fun3 podczas wywoªania nale»y poda nazw funkcji, przekaza jako argument jedynie nazw tablicy (tutaj kompilator ju» sam wie,»e skoro funkcja pobiera jako pierwszy argument tablic, to przekazana jest jej tablica, wystarczy wi c poda jedynie nazw tablicy podczas wywoªania), nie trzeba ju» podawa ilo±ci elementów tablicy ˆ funkcja fun3 jest NIE JEST uniwersalna, poniewa» dziaªa jedynie dla 5 elementowej tablicy - dla tablicy o 5 elementach, wi c nie jest zbyt u»yteczn funkcj Przykªad Kolejny przykªad pokazuje, i» przekazuj c do funkcji tablic w jakikolwiek z 3 poznanych sposobów i modykuj c warto±ci jej elementów w funkcji, po wyj±ciu z niej i powrocie do funkcji main zmiany naniesione w funkcji w main s widoczne: 3 void dosth ( i n t tab [ ], i n t n ) 5 i n t i=0; while ( i<n ) 7 { 8 tab [ i ] = tab [ i ] * tab [ i ] ; 9 i++; 10 } 11 } i n t * tab = malloc ( s i z e o f ( i n t ) * 3) ; 1 tab [ 0 ] = 1 ; 17 tab [ 1 ] = ; 18 tab [ ] = 3 ; 19 0 i n t n = 3, i ; 1 printf ( "PRZED WYKONANIEM FUNKCJI: \ n\n" ) ; 3 f o r ( i=0; i<n ; i++) 4 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 5 printf ( "\n" ) ; 7 dosth ( tab, n ) ; 8 9 printf ( "PO WYKONANIU FUNKCJI: \ n\n" ) ; 30 f o r ( i=0; i<n ; i++) 31 printf ( " t a b l i c a [%d ] = %d\n", i, tab [ i ] ) ; 3 printf ( "\n" ) ; free ( tab ) ; 35 tab = NULL ; 3 37 return 0 ; 38 } Powy»szy program wy±wietli: 1

26 7.3.7 Tablice jednowymiarowe dynamiczne jako typ zwracany funkcji Tablice mog by równie» typem zwracanym funkcji, mówimy wówczas,»e funkcja zwraca tablic (wªa- ±ciwie: wska¹nik do tablicy). Taka tablica powinna by dynamicznie utworzona (za pomoc wska¹nika i funkcji malloc) w funkcji, która j zwraca, a nast pnie pami jej przydzielona powinna zosta zwolniona w funkcji wywoªuj cej dan funkcj (najcz ±ciej w funkcji main). Poni»ej znajduj si przykªady nagªówków funkcji, które zwracaj dynamiczne tablice jednowymiarowe: 1 i n t * funkcja1 ( i n t a, i n t b, char c ) ; 3 char * funkcja ( double d ) ; 4 5 f l o a t * funkcja3 ( ) ; 7 double * funkcja4 ( i n t i, f l o a t f, double *d ) ; Na poni»szym przykªadzie mo»emy zobaczy zwracanie tablicy z funkcji. Nale»y pami ta,»eby typ zwracany funkcji zgadzaª si z warto±ci, któr faktycznie zwracamy. Nasza funkcja tworzy dynamiczn tablic o rozmiarze podanym jako jej argument, wypeªnia j zerami, a nast pnie zwraca. W funkcji main wy±wietlamy stworzon tablic, i po zako«czeniu korzystania z niej, zwalniamy pami : 3 f l o a t * create_array ( i n t n ) 5 i n t i ; f l o a t * tab = malloc ( s i z e o f ( f l o a t ) * n ) ; 7 8 f o r ( i=0; i <10; i++) 9 tab [ i ] = 0. 0 ; return tab ; 1 } i n t main ( i n t argc, char ** argv ) 15 { 1 i n t * tab ; 17 i n t n = 1 0 ; // utworzenie t a b l i c y w f u n k c j i i p r z y p i s a n i e zwroconej t a b l i c y 0 // do t a b l i c y utworzonej w f u n k c j i main 1 tab = create_array ( n ) ; 17

27 3 // w y s w i e t l e n i e t a b l i c y 4 i n t i ; 5 f o r ( i=0; i<n ; i++) printf ( " tab[%d ] = %. f \n", i, tab [ i ] ) ; 7 8 // z w o l n i e n i e pamieci 9 free ( tab ) ; 30 tab = NULL ; 31 3 return 0 ; 33 } 18

28 7.4 Zadania do wykonania Wykonaj wszystkie zadania z tablic statycznych zast puj c je tablicami dynamicznymi (w zadaniu zamiast tablicy statycznej (inaczej: automatycznej) wykorzystaj poznane tablice dynamiczne). 19

7.3 Tablice jednowymiarowe dynamiczne

7.3 Tablice jednowymiarowe dynamiczne 7.3 Tablice jednowymiarowe dynamiczne Tablice statyczne nie daj nam mo»liwo±ci decydowania o ich wymiarach podczas dziaªania programu. Oznacza to»e musimy zna wielko± tablicy na poziomie tworzenia aplikacji.

Bardziej szczegółowo

Wska¹niki, tablice dynamiczne jednowymiarowe, staªe

Wska¹niki, tablice dynamiczne jednowymiarowe, staªe Rozdziaª 9 Wska¹niki, tablice dynamiczne jednowymiarowe, staªe 9.1 Wst p Czym w C jest wska¹nik? Wska¹nik jest zmienn, która zawiera adres (wskazanie) innej zmiennej lub adres dowolnego obszaru w pami

Bardziej szczegółowo

Wska¹niki, tablice dynamiczne wielowymiarowe

Wska¹niki, tablice dynamiczne wielowymiarowe Rozdziaª 11 Wska¹niki, tablice dynamiczne wielowymiarowe 11.1 Wst p Identycznie, jak w przypadku tablic statycznych, tablica dynamiczna mo»e by tablic jedno-, dwu-, trójitd. wymiarow. Tablica dynamiczna

Bardziej szczegółowo

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...); Rozdziaª 4 P tle 4.1 Wst p Niniejszy rozdziaª zawiera opis p tli w j zyku C, wraz z przykªadowymi programami oraz ich obja±nieniem. 4.2 P tle P tla to element j zyka programowania, pozwalaj cy na wielokrotne,

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Lekcja 9 - LICZBY LOSOWE, ZMIENNE Lekcja 9 - LICZBY LOSOWE, ZMIENNE I STAŠE 1 Liczby losowe Czasami spotkamy si z tak sytuacj,»e b dziemy potrzebowa by program za nas wylosowaª jak ± liczb. U»yjemy do tego polecenia: - liczba losowa Sprawd¹my

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java J zyk programowania JAVA c 2011 Vincent Van GOGH: M»czyzna pij cy li»ank kawy Zadanie 6. Napisz program, który tworzy tablic 30 liczb wstawia do tej tablicy liczby od 0 do 29 sumuje te elementy tablicy,

Bardziej szczegółowo

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz Lekcja 8 - ANIMACJA 1 Polecenia Za pomoc Baltiego mo»emy tworzy animacj, tzn. sprawia by obraz na ekranie wygl daª jakby si poruszaª. Do animowania przedmiotów i tworzenia animacji posªu» nam polecenia

Bardziej szczegółowo

Lekcja 9 Liczby losowe, zmienne, staªe

Lekcja 9 Liczby losowe, zmienne, staªe Lekcja 9 Liczby losowe, zmienne, staªe Akademia im. Jana Dªugosza w Cz stochowie Liczby losowe Czasami potrzebujemy by program za nas wylosowaª liczb. U»yjemy do tego polecenia liczba losowa: Liczby losowe

Bardziej szczegółowo

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy. 1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Listy i operacje pytania

Listy i operacje pytania Listy i operacje pytania Iwona Polak iwona.polak@us.edu.pl Uniwersytet l ski Instytut Informatyki pa¹dziernika 07 Który atrybut NIE wyst puje jako atrybut elementów listy? klucz elementu (key) wska¹nik

Bardziej szczegółowo

Lekcja 12 - POMOCNICY

Lekcja 12 - POMOCNICY Lekcja 12 - POMOCNICY 1 Pomocnicy Pomocnicy, jak sama nazwa wskazuje, pomagaj Baltiemu w programach wykonuj c cz ± czynno±ci. S oni szczególnie pomocni, gdy chcemy ci g polece«wykona kilka razy w programie.

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Przetwarzanie sygnaªów

Przetwarzanie sygnaªów Przetwarzanie sygnaªów Laboratorium 1 - wst p do C# Dawid Poªap Przetwarzanie sygnaªów Pa¹dziernik, 2018 1 / 17 Czego mo»na oczekiwa wzgl dem programowania w C# na tych laboratoriach? Dawid Poªap Przetwarzanie

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

KURS C/C++ WYKŁAD 6. Wskaźniki

KURS C/C++ WYKŁAD 6. Wskaźniki Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można

Bardziej szczegółowo

Rekurencyjne struktury danych

Rekurencyjne struktury danych Andrzej Jastrz bski Akademia ETI Dynamiczny przydziaª pami ci Pami, która jest przydzielana na pocz tku dziaªania procesu to: pami programu czyli instrukcje programu pami statyczna zwi zana ze zmiennymi

Bardziej szczegółowo

Metody dowodzenia twierdze«

Metody dowodzenia twierdze« Metody dowodzenia twierdze«1 Metoda indukcji matematycznej Je±li T (n) jest form zdaniow okre±lon w zbiorze liczb naturalnych, to prawdziwe jest zdanie (T (0) n N (T (n) T (n + 1))) n N T (n). 2 W przypadku

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast

Bardziej szczegółowo

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Programowanie wspóªbie»ne wiczenia 12 Przestrzenie krotek cz. 2 Przychodnia lekarska W przychodni lekarskiej pracuje L > 0 lekarzy, z których ka»dy ma jedn z 0 < S L specjalno±ci, przy czym

Bardziej szczegółowo

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

Programowanie i struktury danych 1 / 44 Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje

Bardziej szczegółowo

Języki i metodyka programowania. Wskaźniki i tablice.

Języki i metodyka programowania. Wskaźniki i tablice. Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana

Bardziej szczegółowo

tablica: dane_liczbowe

tablica: dane_liczbowe TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica

Bardziej szczegółowo

Stałe, tablice dynamiczne i wielowymiarowe

Stałe, tablice dynamiczne i wielowymiarowe Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej

Bardziej szczegółowo

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15 ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku

Bardziej szczegółowo

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie Cz ± II Podziaª pracy 1 Tablica sortuj ca Kolejka priorytetowa to struktura danych udost pniaj ca operacje wstawienia warto±ci i pobrania warto±ci minimalnej. Z kolejki liczb caªkowitych, za po±rednictwem

Bardziej szczegółowo

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym. ZESTAWY A Zestaw 1 Organizacja plików: Wszystkie pliki oddawane do sprawdzenia nale»y zapisa we wspólnym folderze o nazwie b d cej numerem indeksu, umieszczonym na pulpicie. Oddajemy tylko ¹ródªa programów

Bardziej szczegółowo

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete

Bardziej szczegółowo

Kompilowanie programów

Kompilowanie programów Rozdziaª 2 Kompilowanie programów 2.1 Wst p 2.2 Kompilatory, IDE Zacznijmy od podania kilku podstawowych informacji: ˆ Program - to ci g polece«(instrukcji) do wykonania dla komputera ˆ Program to algorytm

Bardziej szczegółowo

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ Zak lad Chemii Teoretycznej UJ 26 listopada 2007 wielowymiarowe 1 2 wielowymiarowe 3 Typ tablicowy Plan wielowymiarowe Tablica Zajmujacy spójny obszar w pamieci zestaw zmiennych (obiektów) tego samego

Bardziej szczegółowo

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady: 5 Tablice Tablica jest zestawem obiektów (zmiennych) tego samego typu, do których można się odwołać za pomocą wspólnej nazwy. Obiekty składowe tablicy noszą nazwę elementów tablicy. Dostęp do nich jest

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Lekcja 6 Programowanie - Zaawansowane

Lekcja 6 Programowanie - Zaawansowane Lekcja 6 Programowanie - Zaawansowane Akademia im. Jana Dªugosza w Cz stochowie Wst p Wiemy ju»: co to jest program i programowanie, jak wygl da programowanie, jak tworzy programy za pomoc Baltiego. Na

Bardziej szczegółowo

1 Wska¹niki. 1.1 Wska¹nik typu VOID. Wska¹nik jest obiektem przechowuj cym adres (z pami ci) przypisanej do niego zmiennej.

1 Wska¹niki. 1.1 Wska¹nik typu VOID. Wska¹nik jest obiektem przechowuj cym adres (z pami ci) przypisanej do niego zmiennej. 1 Wska¹niki. Wska¹nik jest obiektem przechowuj cym adres (z pami ci) przypisanej do niego zmiennej. int a; int *b; a = 11; cout

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Typy danych i formatowanie

Typy danych i formatowanie Typy danych i formatowanie Elwira Wachowicz elwira@ifd.uni.wroc.pl 28 marca 2013 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Typy danych i formatowanie 28 marca 2013 1 / 16 Sªowa kluczowe typów danych Pierwotne

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,

Bardziej szczegółowo

Uzupełnienie dot. przekazywania argumentów

Uzupełnienie dot. przekazywania argumentów Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

x y x y x y x + y x y

x y x y x y x + y x y Algebra logiki 1 W zbiorze {0, 1} okre±lamy dziaªania dwuargumentowe,, +, oraz dziaªanie jednoargumentowe ( ). Dziaªanie x + y nazywamy dodawaniem modulo 2, a dziaªanie x y nazywamy kresk Sheera. x x 0

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci. 1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci

Bardziej szczegółowo

Lab. 02: Algorytm Schrage

Lab. 02: Algorytm Schrage Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z

Bardziej szczegółowo

Programowanie obiektowe W3

Programowanie obiektowe W3 Programowanie obiektowe W3 Przegląd typów strukturalnych w C++ : tablice statyczne i dynamiczne Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Typy złożone: tablice

Bardziej szczegółowo

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy. Logika i teoria mnogo±ci, konspekt wykªad 12 Teoria mocy, cz ± II Def. 12.1 Ka»demu zbiorowi X przyporz dkowujemy oznaczany symbolem X obiekt zwany liczb kardynaln (lub moc zbioru X) w taki sposób,»e ta

Bardziej szczegółowo

Metodydowodzenia twierdzeń

Metodydowodzenia twierdzeń 1 Metodydowodzenia twierdzeń Przez zdanie rozumiemy dowolne stwierdzenie, które jest albo prawdziwe, albo faªszywe (nie mo»e by ono jednocze±nie prawdziwe i faªszywe). Tradycyjnie b dziemy u»ywali maªych

Bardziej szczegółowo

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Bash i algorytmy. Elwira Wachowicz. 20 lutego Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16 Inne przydatne polecenia Polecenie Dziaªanie Przykªad

Bardziej szczegółowo

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem. 2018/2019 1. Odcienie szaro±ci Model RGB jest modelem barw opartym na wªa±ciwo±ciach odbiorczych

Bardziej szczegółowo

Macierze i Wyznaczniki

Macierze i Wyznaczniki dr Krzysztof yjewski Mechatronika; S-I.in». 5 pa¹dziernika 6 Macierze i Wyznaczniki Kilka wzorów i informacji pomocniczych: Denicja. Tablic nast puj cej postaci a a... a n a a... a n A =... a m a m...

Bardziej szczegółowo

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L

Bardziej szczegółowo

1 Bª dy i arytmetyka zmiennopozycyjna

1 Bª dy i arytmetyka zmiennopozycyjna 1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

Lekcja 5 Programowanie - Nowicjusz

Lekcja 5 Programowanie - Nowicjusz Lekcja 5 Programowanie - Nowicjusz Akademia im. Jana Dªugosza w Cz stochowie Programowanie i program wedªug Baltiego Programowanie Programowanie jest najwy»szym trybem Baltiego. Z pomoc Baltiego mo»esz

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Lekcja 3 Banki i nowe przedmioty

Lekcja 3 Banki i nowe przedmioty Lekcja 3 Banki i nowe przedmioty Akademia im. Jana Dªugosza w Cz stochowie Banki przedmiotów Co ju» wiemy? co to s banki przedmiotów w Baltie potramy korzysta z banków przedmiotów mo»emy tworzy nowe przedmioty

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

1 Metody iteracyjne rozwi zywania równania f(x)=0

1 Metody iteracyjne rozwi zywania równania f(x)=0 1 Metody iteracyjne rozwi zywania równania f()=0 1.1 Metoda bisekcji Zaªó»my,»e funkcja f jest ci gªa w [a 0, b 0 ]. Pierwiastek jest w przedziale [a 0, b 0 ] gdy f(a 0 )f(b 0 ) < 0. (1) Ustalmy f(a 0

Bardziej szczegółowo

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

Lekcja 3 - BANKI I NOWE PRZEDMIOTY Lekcja 3 - BANKI I NOWE PRZEDMIOTY Wiemy ju» co to s banki przedmiotów i potramy z nich korzysta. Dowiedzieli±my si te»,»e mo»emy tworzy nowe przedmioty, a nawet caªe banki przedmiotów. Na tej lekcji zajmiemy

Bardziej szczegółowo

Liczby zmiennoprzecinkowe

Liczby zmiennoprzecinkowe Liczby zmiennoprzecinkowe 1 Liczby zmiennoprzecinkowe Najprostszym sposobem reprezentowania liczb rzeczywistych byªaby reprezentacja staªopozycyjna: zakªadamy,»e mamy n bitów na cz ± caªkowit oraz m na

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Zmienne i struktury dynamiczne

Zmienne i struktury dynamiczne Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Proces tworzenia programu:

Proces tworzenia programu: Temat 1 Pojcia: algorytm, program, kompilacja i wykonanie programu. Proste typy danych i deklaracja zmiennych typu prostego. Instrukcja przypisania. Operacje wejcia/wyjcia. Przykłady prostych programów

Bardziej szczegółowo

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe 1 Wprowadzenie 1.1 rodowisko programistyczne NetBeans https://netbeans.org/ 1.2 Dokumentacja j zyka Java https://docs.oracle.com/javase/8/docs/api/

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

2 Skªadnia polece«w pliku

2 Skªadnia polece«w pliku Interpreter opisu dziaªa«platformy mobilnej wtyczki 1 Ogólny opis zadania Nale»y napisa program, który b dzie w stanie przeczyta z pliku tekstowego sekwencj polece«ruchu, a nast pnie zasymulowa dziaªanie

Bardziej szczegółowo

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Programowanie w C++ Wykład 4 Katarzyna Grzelak 19 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Funkcje cd K.Grzelak (Wykład 1) Programowanie w C++ 2 / 37 Funkcja powtórzenie Funkcje == podprogramy

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Ukªady równa«liniowych

Ukªady równa«liniowych dr Krzysztof yjewski Mechatronika; S-I 0 in» 7 listopada 206 Ukªady równa«liniowych Informacje pomocnicze Denicja Ogólna posta ukªadu m równa«liniowych z n niewiadomymi x, x, x n, gdzie m, n N jest nast

Bardziej szczegółowo

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X. Relacje 1 Relacj n-argumentow nazywamy podzbiór ϱ X 1 X 2... X n. Je±li ϱ X Y jest relacj dwuargumentow (binarn ), to zamiast (x, y) ϱ piszemy xϱy. Relacj binarn okre±lon w zbiorze X nazywamy podzbiór

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Język ANSI C tablice wielowymiarowe

Język ANSI C tablice wielowymiarowe Język ANSI C tablice wielowymiarowe Gdy tablica wielowymiarowa jest parametrem funkcji, to w standardzie ANSI C konieczne jest podanie wszystkich wymiarów poza pierwszym. Przykład. Napisać program wczytujący

Bardziej szczegółowo

Tablice, funkcje, wskaźniki - wprowadzenie

Tablice, funkcje, wskaźniki - wprowadzenie Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada 2018 1 / 37 Outline 1 Tablice

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki. Wydziaª Matematyki, Fizyki i Informatyki 10 marca 2008 Spis tre±ci Listy 1 Listy 2 3 Co to jest lista? Listy List w Mathematice jest wyra»enie oddzielone przecinkami i zamkni te w { klamrach }. Elementy

Bardziej szczegółowo

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle! Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje

Bardziej szczegółowo

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje

Bardziej szczegółowo

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if. ALGORYTM Algorytm jest przepisem opisuj cym krok po kroku rozwi zanie problemu lub osi gni cie jakiego

Bardziej szczegółowo

Spis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1D300 017 (studia stacjonarne)

Bardziej szczegółowo

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia 2011. Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia 2011. Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej Matematyka wykªad 1 Macierze (1) Andrzej Torój Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej 17 wrze±nia 2011 Plan wykªadu 1 2 3 4 5 Plan prezentacji 1 2 3 4 5 Kontakt moja strona internetowa:

Bardziej szczegółowo